package org.example.top40;

import java.util.Stack;

public class main17 {
    //有效的括号
    //输入：s = "()[]{}"  输出：true
    //思路：栈中没有元素(在没有for完时)或当前元素不等于栈中元素 返回false 当是）这种类型的时，pop
    //最后返回true 需要看看stack是否为空，为空才可以返回true s='['情况！！！
    public static void main(String[] args) {
        String s="()[]{}";
        boolean valid = isValid(s);
        System.out.println(valid);
    }
    private static boolean isValid(String s){
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < s.length(); i++) {
            char c=s.charAt(i);
            if(c=='('){
                stack.push(')');
            } else if (c=='[') {
                stack.push(']');
            } else if (c=='{') {
                stack.push('}');
            } else if (stack.isEmpty()||stack.peek()!=c) {
                return false;
            }else {
                stack.pop();
            }
        }
        return stack.isEmpty();
    }
}
